Subject: DLSw Version 0.16 Chapter 5 (1 of 3)

From: "Alan K. Bartky, Manager of Technology" <[email-masked]>
Date: Thu, 22 Dec 94 10:28:57 PST

----------
X-Sun-Data-Type: text
X-Sun-Data-Description: text
X-Sun-Data-Name: text
X-Sun-Content-Lines: 3
X-Sun-Content-Length: 67

This is overall part 5 of 12

This is part 1 of 3 for chapter 5

----------
X-Sun-Data-Type: default
X-Sun-Data-Description: default
X-Sun-Data-Name: dlsw5a.txt
X-Sun-Content-Lines: 496
X-Sun-Content-Length: 21523

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

5. DLSw State Machine

   The following state tables describe the states for a single connection
   through the Data Link Switch.  State information is kept for each
   connection.  The initial state for a connection is DISCONNECTED.  The
   steady state is either CIRCUIT_ESTABLISHED or CONNECTED.  In the former
   state, an end-to-end circuit has been established allowing the support
   of Type 1 LLC between the end systems.  The latter state exists when an
   end-to-end connection has been established for the support of Type 2 LLC
   services between the end systems.

   For SNA, circuit establishment is via the use of IEEE 802.2 Test or XID
   frames.  SNA devices send these frames to the null SAP in order to
   determine the source route information in support of bridging.  Normally
   SNA devices use SAP 0x04, 0x08, or 0x0C  (most SNA LLC2 devices that
   have a single PU per MAC address use a default of 0x04).  Typically the
   SAP would be used to determine if the Test frames should be sent to the
   DLSw code in the router.  If both bridging and DLSw are enabled, this
   allows the product to ensure that SNA frames are not both bridged and
   switched.  Note that although typically SNA uses a DSAP and SSAP of
   0x04, it allows for other SAPs to be configured and supports unequal
   SAPs.  This allows multiple PUs to share connections between two given
   MAC addresses (each PU to PU session uses one LLC2 connection).

   For NetBIOS, circuit establishment is via the Name Query and Name
   Recognized frames.  These frames are used for both address resolution
   and source route determination.  NetBIOS devices use SAP 0xF0.

5.1. Data Link Switch States

   The Switch-to-Switch Protocol is formally defined through the state
   machines described in this chapter.  The following table lists the
   eleven possible states for the main circuit FSM.  A separate state
   machine instance is employed for each end-to-end circuit that is
   maintained by the Data Link Switch.

   State Name            Description
   ----------            -----------
   CIRCUIT_ESTABLISHED   The end-to-end circuit has been
                         established.  At this time LLC Type 1
                         services are available from end-to-end.

   CIRCUIT_PENDING       The target DLSw is awaiting a REACH_ACK
                         response to an ICANREACH_cs message.

   CIRCUIT_RESTART       The DLSw that originated the reset is
                         awaiting the restart of the data link
                         and the DL_RESTARTED response to a
                         RESTART_DL message.

   CIRCUIT_START         The origin DLSw is awaiting a
                         ICANREACH_cs in response to a
                         CANUREACH_cs message.

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 23]

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

   CONNECTED             The end-to-end connection has
                         been established thereby allowing
                         LLC Type 2 services from end-to-end
                         in addition to LLC Type 1 services.

   CONNECT_PENDING       The origin DLSw is awaiting the
                         CONTACTED response to a CONTACT
                         message.

   CONTACT_PENDING       The target DLSw is awaiting the
                         DLC_CONTACTED confirmation to a
                         DLC_CONTACT signal (i.e., DLC
                         is waiting for a UA response to
                         an SABME command).

   DISCONNECTED          The initial state with no circuit
                         or connection established, the
                         DLSw is awaiting either a
                         CANUREACH_cs, or an ICANREACH_cs.

   DISCONNECT_PENDING    The DLSw that originated the
                         disconnect is awaiting the DL_HALTED
                         response to a HALT_DL message.

   HALT_PENDING          The remote DLSw is awaiting the
                         DLC_DL_HALTED indication following
                         the DLC_HALT_DL request (i.e., DLC
                         is waiting for a UA response to a
                         DISC command), due to receiving a
                         HALT_DL message.

   HALT_PENDING_NOACK    The remote DLSw is awaiting the
                         DLC_DL_HALTED indication following
                         the DLC_HALT_DL request (i.e., DLC
                         is waiting for a UA response to a
                         DISC command), due to receiving a
                         HALT_DL_NOACK message.

   RESTART_PENDING       The remote DLSw is awaiting the
                         DLC_DL_HALTED indication following
                         the DLC_HALT_DL request (i.e., DLC
                         is waiting for a UA response to a
                         DISC command), and the restart of
                         the data link.

   RESOLVE_PENDING       The target DLSw is awaiting
                         the DLC_DL_STARTED indication
                         following the DLC_START_DL request
                         (i.e., DLC is waiting for a Test
                         response as a result of sending a
                         Test command).

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 24]

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

   The DISCONNECTED state is the initial state for a new circuit.  One end
   station starts the connection via an XID or SABME command (i.e., DLC_XID
   or DLC_CONTACTED).  Upon receipt, the Data Link Switches exchange a set
   of CANUREACH_cs, ICANREACH_cs and REACH_ACK messages.  Upon completion
   of this three-legged exchange both Data Link Switches will be in the
   CIRCUIT_ESTABLISHED state.  Three pending states also exist during this
   exchange.  The CIRCUIT_START state is entered by the origin Data Link
   Switch after it has sent the CANUREACH_cs message.  The RESOLVE_PENDING
   state is entered by the target Data Link Switch awaiting a Test response
   to a Test Command.  And lastly, the CIRCUIT_PENDING state is entered by
   the target DLSw awaiting the REACH_ACK reply to an ICANREACH_cs message.

   The CIRCUIT_ESTABLISHED state allows for the exchange of LLC Type 1
   frames such as the XID exchanges between SNA stations that occurs prior
   to the establishment of a connection.  Also, datagram traffic (i.e., UI
   frames)  may be sent and received between the end stations. These
   exchanges use the XIDFRAME and DGRMFRAME messages sent between the Data
   Link Switches.

   In the CIRCUIT_ESTABLISHED state, the receipt of a SABME command (i.e.,
   DLC_CONTACTED) causes the origin DLSw to issue a CONTACT message, to
   send an RNR supervisory frame (i.e., DLC_ENTER_BUSY) to the origin
   station, and to enter the CONNECT_PENDING state awaiting a CONTACTED
   message.  The target DLSw, upon the receipt of a CONTACT message, will
   issue a SABME command (i.e., DLC_CONTACT) and enter the Contact Pending
   state.  Once the UA response is received (i.e., DLC_CONTACTED), the
   target DLSw sends a CONTACTED message and enters the CONNECTED state.
   When received, the origin DLSw enters the CONNECTED state and sends an
   RR supervisory frame (i.e., DLC_EXIT_BUSY).

   The CONNECTED state is the steady state for normal data flow once a
   connection has been established.  Information frames (i.e., INFOFRAME
   messages) are simply sent back and forth between the end points of the
   connection.  This is the path that should be optimized for performance.

   The connection is terminated upon the receipt of a DISC frame or under
   some other error condition detected by DLC (i.e., DLC_ERROR). Upon
   receipt of this indication, the DLSw will halt the local data link, send
   a HALT_DL message to the remote DLSw, and enter the DISCONNECT_PENDING
   State.  When the HALT_DL frame is received by the other DLSw, the local
   DLC is halted for this data link, a DL_HALTED message is returned, and
   the DISCONNECTED state is entered.  Receipt of this DL_HALTED message
   causes the other DLSw to also enter the DISCONNECTED state.

   The CIRCUIT_RESTART state is entered if one of the Data Link Switches
   receives a SABME command  (i.e., DLC_RESET) after data transfer while in
   the CONNECTED state.  This causes a DM command to be returned to the
   origin station and a RESTART_DL message to be sent to the remote Data
   Link Switch. This causes the remote data link to be halted and then
   restarted.  The remote DLSw will then send a DL_RESTARTED message back
   to the first DLSw.  The receipt of the DL_RESTARTED message causes the
   first DLSw to issue a new CONTACT message, assuming that the local DLC
   has been contacted (i.e., the origin station has resent the SABME
   command).  This is eventually responded to by a CONTACTED message.

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 25]

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

   Following this exchange, both Data Link Switches will return to the
   CONNECTED state.  If the local DLC has not been contacted, the receipt
   of a DL_RESTARTED command causes the Data Link Switch to enter the
   CIRCUIT_ESTABLISHED state awaiting the receipt of a SABME command (i.e.,
   DLC_CONTACTED signal).

   The HALT_PENDING, HALT_PENDING_NOACK and RESTART_PENDING states
   correspond to the cases when the Data Link Switch is awaiting responses
   from the local station on the adjacent LAN (e.g., a UA response to a
   DISC command). Also in the RESTART_PENDING state, the Data Link Switch
   will attempt to restart the data link prior to sending a DL_RESTARTED
   message.  For some implementations, the start of a data link involves
   the exchange of a Test command/response on the adjacent LAN (i.e.,
   DLC_START_DL).  For other implementations, this additional exchange may
   not be required.

5.2. State Transition Tables

   This section provides a detailed representation of the Data Link Switch,
   as documented by a single state machine.  Many of the transitions are
   dependent upon local signals between the Data Link Switch entity and one
   of the DLC entities.  These signals and their definitions are given in
   the following tables.

   DLC Events:

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 26]

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

   Event Name      Description
   ----------      -----------
   DLC_CONTACTED   Contact Indication:  DLC has received an SABME
                   command or DLC has received a UA response as a
                   result of sending an SABME command.

   DLC_DGRM        Datagram Indication:  DLC has received a UI frame.

   DLC_ERROR       Error condition indicated by DLC:  Such a
                   condition occurs when a DISC command is received
                   or when DLC experiences an unrecoverable error.

   DLC_INFO        Information Indication:  DLC has received an
                   Information (I) frame.

   DLC_DL_HALTED   Data Link Halted Indication:  DLC has
                   received a UA response to a DISC command.

   DLC_DL_STARTED  Data Link Started Indication:  DLC has
                   received a Test response from the null SAP.

   DLC_RESET       Reset Indication:  DLC has received an SABME
                   command during the time a connection is
                   currently active and has responded with DM.

   DLC_RESOLVE_C   Resolve Command Indication:  DLC has received
                   a Test command addressed to the null SAP, or an
                   XID command addressed to the null SAP.

   DLC_RESOLVED    Resolve request:  DLC has received a TEST response
                   frame (or equivalent for non-LAN DLCs) but has not
                   reserved the resources required for a circuit yet.

   DLC_XID         XID Indication:  DLC has received an XID command
                   or response to a non-null SAP.

   Other Events:

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 27]

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

   Event Name      Description
   ----------      -----------
   XPORT_FAILURE   Failure of the transport connection used by the
                   circuit.

   CS_TIMER_EXP    The CIRCUIT_START timer (started when the circuit
                   went into CIRCUIT_START state) has expired.

   DLC Actions:

   Action Name     Description
   -----------     -----------
   DLC_CONTACT     Contact Station Request:  DLC will send a SABME
                   command or a UA response to an outstanding SABME
                   command.

   DLC_DGRM        Datagram Request:  DLC will send a UI frame.

   DLC_ENTER_BUSY  Enter Link Station Busy:  DLC will send an
                   RNR supervisory frame.

   DLC_EXIT_BUSY   Exit Link Station Busy:  DLC will send an RR
                   supervisory frame.

   DLC_HALT_DL     Halt Data Link Request:  DLC will send a DISC
                   command.

   DLC_INFO        Information Request:  DLC will send an I frame.

   DLC_RESOLVE     Resolve request:  DLC should issue a TEST (or
                   appropriate equivalent for non-LAN DLCs) but need
                   not reserve the resources required for a circuit yet.

   DLC_RESOLVE_R   Resolve Response Request:  DLC will send a
                   Test response or XID response from the null SAP.

   DLC_START_DL    Start Data Link Request:  DLC will send a Test
                   command to the null SAP.

   DLC_XID         XID Request:  DLC will send an XID command or an
                   XID response.

   Other Actions:

   Action Name     Description
   ----------      -----------
   START_CS_TIMER  Start the CIRCUIT_START timer.

   DLC_RESOLVE_R and DLC_START_DL actions require the DLC to reserve the
   resources necessary for a link station as they are used only when a
   circuit is about to be started.  The DLC_RESOLVE action is used for
   topology explorer traffic and does not require such resources to be

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 28]

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

   reserved, though a DLC implementation may choose not to distinguish this
   from the DLC_START_DL action.  See section 5.4 for details of the
   actions and events for explorer frames.

   The Data Link Switch is described by a state transition table as
   documented in the following sections.  Each of the states is described
   below in terms of the events, actions, and next state for each
   transition. If a particular event is not listed for a given state, no
   action and no state transition should occur for that event.  Any
   significant comments concerning the transitions within a given state are
   given immediately following the table representing the state.

   A separate state machine instance is maintained by the Data Link Switch
   for each end-to-end circuit.  The number of circuits that may be
   supported by each Data Link Switch is a local implementation option.

   The CANUREACH_ex, ICANREACH_ex, NETBIOS_NQ_ex, and NETBIOS_NR_ex are SSP
   messages that are not associated with a particular circuit.  The
   processing of these messages is covered in section 5.4.

5.2.1. DISCONNECTED State

   +----------------------+---------------------+----------------------+
   |        Event         |      Action(s)      |      Next State      |
   +----------------------+---------------------+----------------------+
   | Receive CANUREACH_cs | DLC_START_DL        | RESOLVE_PENDING      |
   +----------------------+---------------------+----------------------+
   | Receive DATAFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | DLC_XID              | If source route     | If CANUREACH_cs was  |
   |                      | bridged frame with  | sent:                |
   |                      | broadcast indicated:|   CIRCUIT_START      |
   |                      |   Send CANUREACH_ex |                      |
   |                      | else:               |                      |
   |                      |   Send CANUREACH_cs |                      |
   |                      |   START_CS_TIMER    |                      |
   +----------------------+---------------------+----------------------+
   | DLC_DGRM             | If NETBIOS          |                      |
   |                      | NAME_QUERY:         |                      |
   |                      |  Send NETBIOS_NQ_ex |                      |
   |                      | else:               |                      |
   |                      |  Send DATAFRAME     |                      |
   +----------------------+---------------------+----------------------+
   | DLC_CONTACTED        | Send CANUREACH_cs   | CIRCUIT_START        |
   +----------------------+---------------------+----------------------+

   It is assumed that each Data Link Switch will build a set of topology
   tables giving the identity of each Data Link Switch that can reach a
   specific MAC address or a specific NetBIOS name.  This table can be
   built  using the explorer frames, as per the Explorer FSM in section
   5.4.  As a consequence, the amount of search traffic can be kept to a
   minimum.

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 29]

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

   Upon receipt of a TEST command, broadcast XID or NetBIOS NAME_QUERY, the
   Data Link Switch checks the topology table for the target MAC/SAP or
   NetBIOS name.  If there is no matching entry in the table, the Data Link
   Switch uses the explorer FSMs in section 5.4 to locate the target
   MAC/SAP or NetBIOS name.

   When the first non-broadcast XID or SABME flows,  the Data Link Switch
   issues a CANUREACH_cs to attempt to start a circuit.  The CANUREACH_cs
   message is sent to only those Data Link Switches that are known to be
   able to reach the given MAC address.  The mechanism by which a topology
   table entry is determined to be out-of-date and is deleted from the
   table is implementation specific.

   The DISCONNECTED state is exited upon the sending or receipt of a
   CANUREACH_cs message by a prospective target Data Link Switch.  In the
   former case, the Data Link Switch will issue a Test command to the
   target station (i.e. DLC_START_DL signal is presented to DLC).

     Note 1-  Some implementations will also send a Test command to the
     station that originated the resolve procedure (i.e., a DLC_START_DL
     will be issued) in order to start the data link.

5.2.2. RESOLVE_PENDING State

   +-------------------+-----------------------+-----------------------+
   |        Event      |      Action(s)        |      Next State       |
   +-------------------+-----------------------+-----------------------+
   | Receive DATAFRAME | DLC_DGRM              |                       |
   +-------------------+-----------------------+-----------------------+
   | DLC_DL_STARTED    | If LF value of        | If LF value of        |
   |                   | DLC_DL_STARTED        | DLC_DL_STARTED        |
   |                   | is greater than or    | is greater than or    |
   |                   | equal to LF Size of   | equal to LF Size of   |
   |                   | CANUREACH_cs or LF    | CANUREACH_cs or LF    |
   |                   | Size Control bit set: | Size Control bit set: |
   |                   |   Send ICANREACH_cs   |   CIRCUIT_PENDING     |
   |                   | else:                 | else:                 |
   |                   |   Send DLC_HALT_DL    |   HALT_PENDING_NOACK  |
   +-------------------+-----------------------+-----------------------+
   | DLC_ERROR         |                       | DISCONNECTED          |
   +-------------------+-----------------------+-----------------------+
   | DLC_DGRM          | Send DATAFRAME        |                       |
   +-------------------+-----------------------+-----------------------+

   The RESOLVE_PENDING state is entered upon receipt of a CANUREACH_cs
   message by the target DLSw.  A data link is started, causing a Test
   command to be sent by the DLC.

   Several CANUREACH_cs messages can be received in the RESOLVE_PENDING
   state.  The Data Link Switch may update its topology information based
   upon the origin MAC address information in each CANUREACH_cs message.

   Upon the receipt of a DLC_DL_STARTED signal in the RESOLVE_PENDING
   state, the Data Link Switch may update its topology table base upon the

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 30]